﻿using PMS.Core.Configuration.CommonEnumConfigs;
using PMS.Data.Entities.Customers;

namespace PMS.Services.EntityServices.Customers
{
    /// <summary>
    /// Customer registration interface
    /// </summary>
    public partial interface ICustomerRegistrationService
    {
        /// <summary>
        /// Validate customer
        /// </summary>
        /// <param name="loginAccount">Loginname/email/mobile</param>
        /// <param name="password">Password</param>
        /// <returns>Result</returns>
        (Customer customer, CustomerLoginResults loginResults) ValidateCustomer(string loginAccount, string password);

        /// <summary>
        /// Register customer
        /// </summary>
        /// <param name="request">Request</param>
        /// <returns>Result</returns>
        CustomerRegistrationResult RegisterCustomer(CustomerRegistrationRequest request);

        /// <summary>
        /// Change password
        /// </summary>
        /// <param name="request">Request</param>
        /// <returns>Result</returns>
        ChangePasswordResult ChangePassword(ChangePasswordRequest request);

        /// <summary>
        /// Sets a user email
        /// </summary>
        /// <param name="customer">Customer</param>
        /// <param name="newEmail">New email</param>
        /// <param name="requireValidation">Require validation of new email address</param>
        //void SetEmail(Customer customer, string newEmail, bool requireValidation);

        /// <summary>
        /// Sets a customer userloginname
        /// </summary>
        /// <param name="customer">Customer</param>
        /// <param name="newUsername">New UserLoginname</param>
        //void SetUserLoginname(Customer customer, string newUsername);

        /// <summary>
        /// Sets a customer mobilephone
        /// </summary>
        /// <param name="customer">Customer</param>
        /// <param name="newMobile">New moblile</param>
        //void SetMobilePhone(Customer customer, string newMobile);
    }
}
